package top.malaoshi.web.utils;

import javax.servlet.http.HttpServletRequest;

/**
 * 跨域工具类
 */
public class CorsUtils {

    /**
     * 判断是否是跨域请求
     * 判断方式：在请求头中有 Origin 头信息，包含请求的源信息（协议、域名和端口）
     * 如果Origin与服务器域名相同，说明不是跨域；如果不同，说明是跨域
     */
    public static boolean isCorsRequest(HttpServletRequest request) {

        String server = WebServerUtil.getUrlContext(request);

        String origin = request.getHeader("Origin");
        // 浏览器直接访问本服务的网页等（即：不是跨域），此时没有 Origin 请求头位null
        if(origin == null){
            return false;
        }
        return !server.equals(origin);
    }



    /**
     * 判断是否跨域 非简单请求的 preflight 预检请求（options方法）
     * @param request
     * @return
     */
    public static boolean isPreFlightRequest(HttpServletRequest request) {
        return ("options".equalsIgnoreCase(request.getMethod()) &&
                request.getHeader("Access-Control-Request-Method") != null);
    }

}
